package cn.com.surker.sale.service;

import cn.com.surker.system.entity.DataSourceInfo;

import java.util.List;
import java.util.Map;

/**
 * @Author lucky
 * @create 2021年10月21 16:49
 * @desc 销售报表
 */
public interface ISaleReportService {

    /**
     * 收款年报
     * @param ds
     * @return
     */
    Map<String, Object> cloudYearSaleReturn(DataSourceInfo ds);

    /**
     * 集团版收款年报
     * @param dsList
     * @return
     */
    Map<String, Object> cloudGroupYearSaleReturn();

    /**
     * 集团版收款月报
     * @param dsList
     * @param dateType 日期类型(0:本月,1:上月,2:年)
     * @return
     */
    Map<String, Object> cloudGroupSaleReturn(Integer dateType, String month);

    /**
     * 查询销售回款月报
     * @param ds
     * @param day 日期格式
     * @return
     */
    List<Map<String, Object>> querySaleMonth(DataSourceInfo ds, String day);

    /**
     * 查询销售人员回款明细
     * @param ds
     * @param conName 工程名称
     * @param startTime 开始时间
     * @param endTime 结束时间
     * @param sales 业务人员
     * @param payType 付款方式
     * @param offset
     * @param limit
     * @return
     */
    Map<String, Object> querySaleMoney(DataSourceInfo ds, String conName, String startTime, String endTime,
                                 String sales, Integer offset, Integer limit, String payType);

    /**
     * 查询销售日报表
     * @param ds
     * @param dateType 日期类型(0:周,1:月,2:年)
     * @return
     */
    Map<String, Object> cloudDayReport(DataSourceInfo ds, Integer dateType);

    /**
     * 查询销售日报明细
     * @param ds
     * @return
     */
    Map<String, Object> cloudDayReportDetail(DataSourceInfo ds, String startTime, String endTime, String saleMans);


    /**
     * 销售人员日报明细
     * @param ds
     * @param startTime
     * @param endTime
     * @param saleMan 销售人员
     * @return
     */
    List<Map<String, Object>> cloudSaleDayReportDetail(DataSourceInfo ds, String startTime, String endTime, String saleMan);

    /**
     * 查询集团版销售日报表
     * @param dateType 日期类型(0:周,1:月,2:年)
     * @return
     */
    Map<String, Object> cloudGroupDayReport(Integer dateType);

    /**
     * 手机工程完成报表
     * @param ds
     * @param startTime 开始时间
     * @param endTime 结束时间
     * @param saleMan 业务人员
     * @return
     */
    Map<String, Object> cloudBuildReport(DataSourceInfo ds, String name, String startTime,
                                   String endTime, Integer offset, Integer limit, String saleMan);

    /**
     * 统计集团版年报表数据
     */
    void threadGroupYearReturnReport();

    /**
     * 统计集团版砼收款报表数据
     */
    void threadGroupReturnReport();

    /**
     * 统计集团版报表数据
     */
    void threadGroupDayReport();

    /**
     * 统计销售早报
     * @param type 类型(0：日报，1：月报)
     * @param startTime
     * @param endTime
     * @return
     */
    void statisticsSale(Integer type, String startTime, String endTime);

}
